import com.mysql.cj.jdbc.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 19182
 * Date: 2025-08-10
 * Time: 13:42
 */
public class JdbcDemo1 {
    public static void main(String[] args) throws SQLException {    //这里请求服务器连接, 有可能会被服务器拒绝所以抛异常
        Scanner scanner = new Scanner(System.in);;
        //创建数据源对象, 这里获取MySQL数据源, 也就是获取数据库在哪里
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java117?characterEncoding=utf8&useSSL=false"); //url获取网络上的资源地址
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("201754ljj");
        // 2. 和数据库服务器进行通信. 需要建立网络连接
        Connection connection = dataSource.getConnection();
        //构造SQL语句, 让用户来输入要插入的数据
        System.out.println("请输入要插入的id:");
        int id = scanner.nextInt();
        System.out.println("请输入要插入的name:");
        String name = scanner.next();
        String sql = "insert into student values(?, ?)"; //?是占位符, 占了这个参数位置
        PreparedStatement preparedStatement = connection.prepareStatement(sql); //预处理SQL语句, 语法检查等等操作
        preparedStatement.setInt(1, id);
        preparedStatement.setString(2, name); //传参, 第一个参数是SQL语句对应参数位置
        // 4. 执行 SQL (把 SQL 通过网络发送到服务器)
        //    进行增, 删, 改, 甚至建表删表...... 这些操作统称为 update ~~
        //    查, 有另一个方法 executeQuery ~~
        //    当前的操作影响到 几 行~~
        int n = preparedStatement.executeUpdate();
        System.out.println("n = " + n);
        // 5. 关闭连接等资源, 后申请的资源先关闭
        preparedStatement.close();
        connection.close();
    }
}
